package cn.edu.scnu.semart.user.service;

import cn.edu.scnu.semart.model.user.UserFollow;
import cn.edu.scnu.semart.vo.user.FollowUserVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

public interface UserFollowService extends IService<UserFollow> {
    // 关注
    boolean follow(Integer followerId, Integer followedId);

    // 取关
    boolean unfollow(Integer followerId, Integer followedId);

    // 是否已关注
    boolean isFollow(Integer followerId, Integer followedId);

    // 统计粉丝数
    long countFans(Integer userId);

    // 统计关注数
    long countFollows(Integer userId);

    /**
     * 分页查询当前用户的关注列表
     */
    IPage<FollowUserVo> pageFollows(Page<FollowUserVo> page, Integer currentUserId);

    /**
     * 分页查询当前用户的粉丝列表
     */
    IPage<FollowUserVo> pageFans(Page<FollowUserVo> page, Integer currentUserId);
}
